% funnkcja pobiera produkt z regal; argumentem wejsciowym jest indeks
% robota,dla ktorego operacja jest przeprowadzana

function pobierz_produkt(indeks_robota)
global roboty
global serwer_ob
korytarz = roboty(indeks_robota).indeks_korytarza;
 %do_rezerwacji=[];
    for i = 1:8
    if (roboty(indeks_robota).maska_korytarza(i).r ~= 0 )
        rezerwuj(1,indeks_robota,[ serwer_ob.korytarze(korytarz,i).x,serwer_ob.korytarze(korytarz,i).y]);
    end
    end

pozycja = roboty(indeks_robota).pozycja;
start = roboty(indeks_robota).start;
%okreslamy wjazd do korytarza
 % wjazd zachodni lub wschodni
 korytarz = roboty(indeks_robota).indeks_korytarza; %zapamietujemy indeks aktualnego korytarza
 wjazd = roboty(indeks_robota).start(1) < serwer_ob.korytarze(korytarz,4).x;

 
 % tutaj okreslamy jakiemu polu w masce korytarza odpowiada aktualna
 % pozycja robota
    punkt = pozycja(1) - start(1);
    if punkt < 0
        start = start  - 7;
        punkt = pozycja(1) - start(1) + 1;
    else
        if wjazd
        punkt = punkt + 1;
        else
            punkt = punkt + 8;
        end
    end

% do porowanania    
x = pozycja(1);
y = pozycja(2);


% tutaj przeprowadzamy operacje dodawania u usowania produktow z
% odpowiednich tablic
 if  roboty(indeks_robota).maska_korytarza(punkt).i == 1 
     for i = 1:2
         a=1;
        while 1
            if(size(roboty(indeks_robota).produkty,2)<a) 
                break; 
            end;
            
         produkt = roboty(indeks_robota).produkty(a);  % numer aktualnie rozpatrywanego produktu
         x1 = round(produkt/1000);
        y1 = mod(produkt,1000);
         if x == x1 && (y == y1 - 1 || y == y1 + 1)
             % dodajemy produkt do zabranych
             roboty(indeks_robota).zabrane_produkty(size(roboty(indeks_robota).zabrane_produkty,2)+1) = roboty(indeks_robota).produkty(a);
             % us�wamy produkt z listy do zabrania
             roboty(indeks_robota).produkty(a) = [];
             %  roboty(indeks_robota).maska_korytarza(punkt).r = 0;
             % roboty(indeks_robota).maska_korytarza(punkt).i = 0;
             if size(roboty(indeks_robota).produkty_in,2) >= a
             % usowamy z listy produktow
             roboty(indeks_robota).produkty_in(a)=[];
             end
             break;
         end
         if a == size(roboty(indeks_robota).produkty,2)
             break;
         end
         a = a + 1;
        end
     end
      % teraz nalezy wykonac ruch
      roboty(indeks_robota).maska_korytarza(punkt).i = 0;
      roboty(indeks_robota).stan = 2;
 else
     % zmniejszamy o 1 zmienna decydujaca o opuznnieniu podczas pobierania
     roboty(indeks_robota).maska_korytarza(punkt).i = roboty(indeks_robota).maska_korytarza(punkt).i - 1;
 end

